定义
由于webrtc是基于P2P技术的一个协议栈,大多数情况下能满足1-5人的同时并发音视频通讯。但是对于多于5人乃至10、20人的并发,使用P2P技术会造成终端设备无法承受负荷。因此需要将P2P模式改造成能适应大量并发模式,即媒体转发服务(MCU)。
难点
由于webrtc本身是基于P2P的技术,没有MCU的实现。因此需要自己编写MCU的源码。难点有如下几个:
- 如何与终端设备建立连接
- 如何接收和转发媒体流
- 转发如何高效,尽量少的延时
- 转发后如何保证视频质量
这几点前两点是核心技术问题,如果突破不了则无法实现MCU转发。后两点是如何提高品质的问题,但是品质决定了该技术的可行性。如果视频品质比P2P下差太多,也无实际意义。
建立连接
如何与终端设备建立连接的技术是直接关系到MCU端是否能正常运行的核心技术,为了能使终端设备和MCU的连接简单化,我们把MCU也想象成是一个PEER,那么换言之,MCU只需要完全遵循webrtc的P2P连接过程即可。那么按照此观点,我们需要在MCU服务器端引入webrtc协议栈来进行连接。但是注意,webrtc流媒体连接与转发都是在协议栈内部完成,也就是说我们没法从webrtc的外部接口直接拿到媒体流数据,拿不到媒体流数据也就意味着我们没法做自定义转发。因此该方案被否决。
那么如何能完全模拟webrtc的连接过程同时又能拿到终端媒体流数据呢?那么我们需要去了解webrtc的连接过程。
webrtc是依照叫PeerConnection的连接过程,其连接过程需要四个角色来合作完成,即